package com.springapp.utils;

import java.io.File;
import java.net.URL;
import java.net.URLDecoder;

/**
 * 获取配置文件中,其它相关配置文件存储地址
 * @lastUpdateTime : 2015年4月8日 09:27:15
 * @author : TD 
 * @context : 初衷:在各种特殊情况下(例如不同系统window/linux ,不同文件访问规则 ftp/http/共享盘),
 *         只需要编辑deployFilePath.properties文件中属性 ,即可告诉程序 分布在其它任何地方的配置文件 并读取使用
 *         (简称没事找事干,需求不确定,只能这样改!!!!!)
 */
public class ConfigFileAddress {

	/**
	 * main方法 在window7 64位中 IDE环境 和 JAR环境 都测试通过 如在Linux系统运行 需要重新在进行该main方法测试
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println(getConfigFilePath());
	}

	private static String configFilePath = ""; // 全局文件路径

	/**
	 * 根据文件地址,读取其它指定配置文件的路径
	 * 
	 * @return
	 */
	public static String getConfigFilePath() {
		if (configFilePath.isEmpty()) {
			/*
			 * try {
			 * 
			 * Properties p = new Properties(); String path = getProjectPath() +
			 * "deployFilePath.properties" ; InputStream in = new
			 * BufferedInputStream(new FileInputStream(path)); p.load(in);
			 * configFilePath = p.getProperty("deployFilePath"); } catch
			 * (Exception e) { configFilePath="D:\\agent\\";
			 * 
			 * 
			 * }
			 */
			configFilePath = ConfigFileAddress.getUrl();
		}
		return configFilePath;
	}

	/**
	 * 获取路径 (区分是在 IDE环境中 还是在 生成JAR架包中)
	 * 该方式未使用
	 * @return
	 */
	private static String getProjectPath() {
		String filePath = "";
		try {

			URL url = CommonTools.class.getProtectionDomain().getCodeSource()
					.getLocation();
			filePath = URLDecoder.decode(url.getPath(), "UTF-8");
			if (filePath.endsWith(".jar")) {
				filePath = filePath.substring(1, filePath.lastIndexOf("/") + 1);
			} else {
				filePath = System.getProperty("user.dir") + "/src/";
				filePath = filePath.replace("\\", "/");
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
		return filePath;
	}

	/**
	 * 得到工程的目录所在盘的根路径
	 * @return
	 */
	public static String getUrl() {
		String str = null;
		try {
			String classpath = System.getProperty("user.dir");
			String path = classpath + File.separator + "agent" + File.separator;
			str = path;
		} catch (Exception e) {
			e.printStackTrace();

		}
		return str;
	}
	
	/**
	 * 得到工程的目录所在盘的根路径
	 * @return
	 */
	public static String getUrl(String folderName) {
		String str = null;
		try {
			String classpath = System.getProperty("user.dir");
			String path = classpath + File.separator + folderName + File.separator;
			str = path;
		} catch (Exception e) {
			e.printStackTrace();

		}
		return str;
	}

}
